package com.qba.trafficbb;

import java.util.ArrayList;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

import com.google.gson.Gson;
import com.qba.trafficbb.modelo.Estadistica;


import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;

import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;

import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;

public class EstadisticasActivity extends BaseActivity {

	private LayoutInflater liInfladorItem;
	private ListView lstListaEst;
	private TextView txtNoresultado = null;
	private LinearLayout lytEst=null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_estadisticas);
		
		lstListaEst=(ListView)findViewById(R.id.lstEstadisticas);
		txtNoresultado=(TextView)findViewById(R.id.txtNoResultado);
		liInfladorItem=(LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
		lytEst=(LinearLayout)findViewById(R.id.lytUltimaEst);
		
		
		List<Estadistica> tmpList=leeEstadistica();
		Estadistica ultimaEsta=leeUltimaEstadistica();
		
		if(tmpList==null || tmpList.isEmpty())
		{
			txtNoresultado.setVisibility(View.VISIBLE);
			lytEst.setVisibility(View.GONE);
			
		}
		else
		{
			txtNoresultado.setVisibility(View.GONE);
			lytEst.setVisibility(View.VISIBLE);
			lstListaEst.setAdapter(new EstadisticasAdapter(this, R.id.lstEstadisticas, tmpList));
			
			TextView txtFecha = null;
			ProgressBar pgbProgreso = null;
			TextView txtValorPuntuacion = null;
			TextView txtValorPorciento = null;
			
			
			
			
			
				txtFecha=(TextView)findViewById(R.id.txtFechaJuego);
			
				pgbProgreso=(ProgressBar)findViewById(R.id.pgbPuntuacion);
			
				txtValorPuntuacion=(TextView)findViewById(R.id.txtValorPuntuacion);
				txtValorPorciento=(TextView)findViewById(R.id.txtValorPorciento);
			
			
			rellenarItemEstadistica(txtFecha, txtValorPuntuacion, txtValorPorciento, pgbProgreso, ultimaEsta);
			
			
		}
		
		
		
	}
	
	
	private Estadistica leeUltimaEstadistica()
	{
		
		Gson gson=new Gson();
		Estadistica res=null;
	
		
		String jsonEstadis=leePreferencia(CNT_ULTIMA_ESTADISTICA, "");
		
		if(jsonEstadis!=null && !"".equals(jsonEstadis))
		{
			res=gson.fromJson(jsonEstadis, Estadistica.class);
		}
		return res;
		
	} 
	
	protected List<Estadistica> leeEstadistica()
	{
		Estadistica[] arrEst= super.leeEstadistica().toArray(new Estadistica[0]);
		List<Estadistica> result=null;
		
		if(arrEst!=null){
			Arrays.sort(arrEst, new Comparator<Estadistica>() {
				@Override
				public int compare(Estadistica lhs, Estadistica rhs) {
					return Integer.valueOf(lhs.getPuntuacion()).compareTo(Integer.valueOf(rhs.getPuntuacion()));
				}
				
			});
			
			arrEst=Arrays.copyOfRange(arrEst, 0, 4);
			
			result=Arrays.asList(arrEst);
			
		}
		else
		{
			result=new ArrayList<Estadistica>();
		}
		return result;
	}
	
	class EstadisticasAdapter extends ArrayAdapter<Estadistica>
	{
		
		public EstadisticasAdapter(Context context, int resource,List<Estadistica> objects) {
			super(context, resource,  objects);
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			TextView txtFecha = null;
			ProgressBar pgbProgreso = null;
			TextView txtValorPuntuacion = null;
			TextView txtValorPorciento = null;
			
			
			
			Estadistica senalActual = getItem(position);
			
			
			if (null == convertView) {
				convertView = liInfladorItem.inflate(R.layout.item_estadisticas, null);
			}
			
			if(txtFecha==null){
				txtFecha=(TextView)convertView.findViewById(R.id.txtFechaJuego);
			}
			
			
			if(pgbProgreso==null){
				pgbProgreso=(ProgressBar)convertView.findViewById(R.id.pgbPuntuacion);
			}
			
			if(txtValorPuntuacion==null){
				txtValorPuntuacion=(TextView)convertView.findViewById(R.id.txtValorPuntuacion);
			}
			
			
			if(txtValorPorciento==null){
				txtValorPorciento=(TextView)convertView.findViewById(R.id.txtValorPorciento);
			}
			
			rellenarItemEstadistica(txtFecha, txtValorPuntuacion, txtValorPorciento, pgbProgreso, senalActual);
				
			return convertView;
		}
	}
	
	
	private void rellenarItemEstadistica(TextView fecha,TextView aciertos, TextView porciento,ProgressBar progreso,Estadistica estad)
	{
		try {
		fecha.setText(formateaFecha(estad.getFecha()));
		
		aciertos.setText(estad.getPuntuacion()+"/"+estad.getPuntajeMaximo());
		
		
		porciento.setText(String.valueOf(Math.round(estad.getPuntuacion()*100D/estad.getPuntajeMaximo()))+"%");
		
		progreso.setMax(estad.getPuntajeMaximo());
		progreso.setProgress(estad.getPuntuacion());
		} catch (Exception e) {
			
		}
	}
	

}
